package org.stragma.symbian.apply.stratego;

import org.strategoxt.stratego_lib.*;
import org.strategoxt.stratego_lib.*;
import org.strategoxt.lang.*;
import org.spoofax.interpreter.terms.*;
import static org.strategoxt.lang.Term.*;
import org.spoofax.interpreter.library.AbstractPrimitive;
import java.util.ArrayList;
import java.lang.ref.WeakReference;

@SuppressWarnings("all") public class EnsugarC  
{ 
  protected static final boolean TRACES_ENABLED = true;

  protected static ITermFactory constantFactory;

  private static WeakReference<Context> initedContext;

  private static boolean isIniting;

  protected static IStrategoTerm const3;

  protected static IStrategoTerm const2;

  protected static IStrategoTerm constCons0;

  protected static IStrategoTerm constDR_DUMMY0;

  protected static IStrategoTerm const1;

  protected static IStrategoTerm constNil0;

  protected static IStrategoTerm const0;

  public static IStrategoConstructor _consConc_2;

  public static IStrategoConstructor _consNone_0;

  public static IStrategoConstructor _consSome_1;

  public static IStrategoConstructor _consDR_DUMMY_0;

  public static IStrategoConstructor _consInt_1;

  public static IStrategoConstructor _consAdd_2;

  public static IStrategoConstructor _consSub_2;

  public static IStrategoConstructor _consCAssign_2;

  public static IStrategoConstructor _consRange_2;

  public static IStrategoConstructor _consVar_1;

  public static IStrategoConstructor _consFunc_2;

  public static IStrategoConstructor _consProcedure_5;

  public static IStrategoConstructor _consType_1;

  public static IStrategoConstructor _consFunctionPtr_0;

  public static IStrategoConstructor _consArray_2;

  public static IStrategoConstructor _consBorder_2;

  public static IStrategoConstructor _consDeclaration_2;

  public static IStrategoConstructor _consAssign_2;

  public static IStrategoConstructor _consCIncrementStmt_2;

  public static IStrategoConstructor _consCIncrementExp_1;

  public static IStrategoConstructor _consCIncrementExp_2;

  public static IStrategoConstructor _consCFunctionPtr_1;

  public static IStrategoConstructor _consCBorder_2;

  public static IStrategoConstructor _consCArray_2;

  public static IStrategoConstructor _consCDeclaration_2;

  public static IStrategoConstructor _consCArgument_2;

  public static IStrategoConstructor _consCAccess_2;

  public static IStrategoConstructor _consAccess_2;

  public static IStrategoConstructor _consArgument_2;

  public static IStrategoConstructor _consSubscript_2;

  public static Context init(Context context)
  { 
    synchronized(EnsugarC.class)
    { 
      if(isIniting)
        return null;
      try
      { 
        isIniting = true;
        ITermFactory termFactory = context.getFactory();
        if(constantFactory == null)
        { 
          initConstructors(termFactory);
          initConstants(termFactory);
        }
        if(initedContext == null || initedContext.get() != context)
        { 
          org.strategoxt.stratego_lib.Main.init(context);
          org.strategoxt.stratego_lib.Main.init(context);
          context.registerComponent("EnsugarC");
        }
        initedContext = new WeakReference<Context>(context);
        constantFactory = termFactory;
      }
      finally
      { 
        isIniting = false;
      }
      return context;
    }
  }

  public static Context init()
  { 
    return init(new Context());
  }

  public static void main(String args[])
  { 
    Context context = init();
    context.setStandAlone(true);
    try
    { 
      IStrategoTerm result;
      try
      { 
        result = context.invokeStrategyCLI(io_$Ensugar$C_0_0.instance, "EnsugarC", args);
      }
      finally
      { 
        context.getIOAgent().closeAllFiles();
      }
      if(result == null)
      { 
        System.err.println("EnsugarC" + (TRACES_ENABLED ? ": rewriting failed, trace:" : ": rewriting failed"));
        context.printStackTrace();
        context.setStandAlone(false);
        System.exit(1);
      }
      else
      { 
        //System.out.println(result);
        context.setStandAlone(false);
        System.exit(0);
      }
    }
    catch(StrategoExit exit)
    { 
      context.setStandAlone(false);
      //System.exit(exit.getValue());
    }
  }

  public static IStrategoTerm mainNoExit(String ... args) throws StrategoExit
  { 
    return mainNoExit(new Context(), args);
  }

  public static IStrategoTerm mainNoExit(Context context, String ... args) throws StrategoExit
  { 
    try
    { 
      init(context);
      return context.invokeStrategyCLI(io_$Ensugar$C_0_0.instance, "EnsugarC", args);
    }
    finally
    { 
      context.getIOAgent().closeAllFiles();
    }
  }

  public static Strategy getMainStrategy()
  { 
    return io_$Ensugar$C_0_0.instance;
  }

  public static void initConstructors(ITermFactory termFactory)
  { 
    _consConc_2 = termFactory.makeConstructor("Conc", 2);
    _consNone_0 = termFactory.makeConstructor("None", 0);
    _consSome_1 = termFactory.makeConstructor("Some", 1);
    _consDR_DUMMY_0 = termFactory.makeConstructor("DR_DUMMY", 0);
    _consInt_1 = termFactory.makeConstructor("Int", 1);
    _consAdd_2 = termFactory.makeConstructor("Add", 2);
    _consSub_2 = termFactory.makeConstructor("Sub", 2);
    _consCAssign_2 = termFactory.makeConstructor("CAssign", 2);
    _consRange_2 = termFactory.makeConstructor("Range", 2);
    _consVar_1 = termFactory.makeConstructor("Var", 1);
    _consFunc_2 = termFactory.makeConstructor("Func", 2);
    _consProcedure_5 = termFactory.makeConstructor("Procedure", 5);
    _consType_1 = termFactory.makeConstructor("Type", 1);
    _consFunctionPtr_0 = termFactory.makeConstructor("FunctionPtr", 0);
    _consArray_2 = termFactory.makeConstructor("Array", 2);
    _consBorder_2 = termFactory.makeConstructor("Border", 2);
    _consDeclaration_2 = termFactory.makeConstructor("Declaration", 2);
    _consAssign_2 = termFactory.makeConstructor("Assign", 2);
    _consCIncrementStmt_2 = termFactory.makeConstructor("CIncrementStmt", 2);
    _consCIncrementExp_1 = termFactory.makeConstructor("CIncrementExp", 1);
    _consCIncrementExp_2 = termFactory.makeConstructor("CIncrementExp", 2);
    _consCFunctionPtr_1 = termFactory.makeConstructor("CFunctionPtr", 1);
    _consCBorder_2 = termFactory.makeConstructor("CBorder", 2);
    _consCArray_2 = termFactory.makeConstructor("CArray", 2);
    _consCDeclaration_2 = termFactory.makeConstructor("CDeclaration", 2);
    _consCArgument_2 = termFactory.makeConstructor("CArgument", 2);
    _consCAccess_2 = termFactory.makeConstructor("CAccess", 2);
    _consAccess_2 = termFactory.makeConstructor("Access", 2);
    _consArgument_2 = termFactory.makeConstructor("Argument", 2);
    _consSubscript_2 = termFactory.makeConstructor("Subscript", 2);
  }

  public static void initConstants(ITermFactory termFactory)
  { 
    const0 = termFactory.makeString("1");
    constNil0 = (IStrategoTerm)termFactory.makeList();
    const1 = termFactory.makeString("ArrayAccess");
    constDR_DUMMY0 = termFactory.makeAppl(EnsugarC._consDR_DUMMY_0, NO_TERMS);
    constCons0 = (IStrategoTerm)termFactory.makeListCons(EnsugarC.constDR_DUMMY0, (IStrategoList)EnsugarC.constNil0);
    const2 = termFactory.makeString("-440237");
    const3 = termFactory.makeString("0");
  }

  @SuppressWarnings("all") public static class topdownstopping_1_0 extends Strategy 
  { 
    public static topdownstopping_1_0 instance = new topdownstopping_1_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term, Strategy g_7)
    { 
      context.push("topdownstopping_1_0");
      Fail0:
      { 
        IStrategoTerm term0 = term;
        Success0:
        { 
          Fail1:
          { 
            term = g_7.invoke(context, term);
            if(term == null)
              break Fail1;
            if(true)
              break Success0;
          }
          term = term0;
          lifted0 lifted00 = new lifted0();
          lifted00.g_7 = g_7;
          term = SRTS_all.instance.invoke(context, term, lifted00);
          if(term == null)
            break Fail0;
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class io_$Ensugar$C_0_0 extends Strategy 
  { 
    public static io_$Ensugar$C_0_0 instance = new io_$Ensugar$C_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("io_EnsugarC_0_0");
      Fail2:
      { 
        term = io_wrap_1_0.instance.invoke(context, term, $Apply__$Ensugar$C_0_0.instance);
        if(term == null)
          break Fail2;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Apply__$Ensugar$C_0_0 extends Strategy 
  { 
    public static $Apply__$Ensugar$C_0_0 instance = new $Apply__$Ensugar$C_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("Apply__EnsugarC_0_0");
      Fail3:
      { 
        term = topdown_1_0.instance.invoke(context, term, lifted3.instance);
        if(term == null)
          break Fail3;
        term = bottomup_1_0.instance.invoke(context, term, lifted6.instance);
        if(term == null)
          break Fail3;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class convert_array_dimensions_0_0 extends Strategy 
  { 
    public static convert_array_dimensions_0_0 instance = new convert_array_dimensions_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("convert_array_dimensions_0_0");
      Fail4:
      { 
        IStrategoTerm term1 = term;
        Success1:
        { 
          Fail5:
          { 
            IStrategoTerm c_8 = null;
            IStrategoTerm d_8 = null;
            IStrategoTerm e_8 = null;
            IStrategoTerm f_8 = null;
            IStrategoTerm g_8 = null;
            IStrategoTerm h_8 = null;
            IStrategoTerm i_8 = null;
            IStrategoTerm j_8 = null;
            IStrategoTerm k_8 = null;
            IStrategoTerm m_8 = null;
            IStrategoTerm l_8 = null;
            IStrategoTerm p_8 = null;
            if(term.getTermType() != IStrategoTerm.LIST || ((IStrategoList)term).isEmpty())
              break Fail5;
            f_8 = ((IStrategoList)term).head();
            g_8 = ((IStrategoList)term).tail();
            IStrategoList annos0 = term.getAnnotations();
            j_8 = annos0;
            term = f_8;
            if(term.getTermType() != IStrategoTerm.APPL || EnsugarC._consRange_2 != ((IStrategoAppl)term).getConstructor())
              break Fail5;
            IStrategoTerm arg0 = term.getSubterm(0);
            if(arg0.getTermType() != IStrategoTerm.APPL || EnsugarC._consInt_1 != ((IStrategoAppl)arg0).getConstructor())
              break Fail5;
            d_8 = arg0.getSubterm(0);
            IStrategoTerm arg1 = term.getSubterm(1);
            if(arg1.getTermType() != IStrategoTerm.APPL || EnsugarC._consInt_1 != ((IStrategoAppl)arg1).getConstructor())
              break Fail5;
            c_8 = arg1.getSubterm(0);
            h_8 = term;
            term = g_8;
            e_8 = g_8;
            i_8 = term;
            IStrategoList list0;
            list0 = checkListTail(i_8);
            if(list0 == null)
              break Fail5;
            term = termFactory.annotateTerm((IStrategoTerm)termFactory.makeListCons(h_8, list0), checkListAnnos(termFactory, j_8));
            m_8 = term;
            term = termFactory.makeTuple(c_8, d_8);
            term = subt$S_0_0.instance.invoke(context, term);
            if(term == null)
              break Fail5;
            term = termFactory.makeTuple(EnsugarC.const0, term);
            term = add$S_0_0.instance.invoke(context, term);
            if(term == null)
              break Fail5;
            k_8 = term;
            p_8 = m_8;
            term = this.invoke(context, e_8);
            if(term == null)
              break Fail5;
            l_8 = term;
            term = p_8;
            IStrategoList list1;
            list1 = checkListTail(l_8);
            if(list1 == null)
              break Fail5;
            term = (IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(EnsugarC._consInt_1, new IStrategoTerm[]{k_8}), list1);
            if(true)
              break Success1;
          }
          term = term1;
          IStrategoTerm term2 = term;
          Success2:
          { 
            Fail6:
            { 
              if(term.getTermType() != IStrategoTerm.LIST || !((IStrategoList)term).isEmpty())
                break Fail6;
              if(true)
                break Success2;
            }
            term = term2;
            if(term.getTermType() != IStrategoTerm.LIST || ((IStrategoList)term).isEmpty())
              break Fail4;
            IStrategoTerm arg2 = ((IStrategoList)term).head();
            if(arg2.getTermType() != IStrategoTerm.STRING || !"".equals(((IStrategoString)arg2).stringValue()))
              break Fail4;
            IStrategoTerm arg3 = ((IStrategoList)term).tail();
            if(arg3.getTermType() != IStrategoTerm.LIST || !((IStrategoList)arg3).isEmpty())
              break Fail4;
            term = EnsugarC.constNil0;
          }
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class array_procedure_0_0 extends Strategy 
  { 
    public static array_procedure_0_0 instance = new array_procedure_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("array_procedure_0_0");
      Fail7:
      { 
        IStrategoTerm w_8 = null;
        if(term.getTermType() != IStrategoTerm.APPL || EnsugarC._consProcedure_5 != ((IStrategoAppl)term).getConstructor())
          break Fail7;
        w_8 = term;
        term = dr_scope_1_1.instance.invoke(context, w_8, lifted8.instance, EnsugarC.const1);
        if(term == null)
          break Fail7;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class array_declarations_0_0 extends Strategy 
  { 
    public static array_declarations_0_0 instance = new array_declarations_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("array_declarations_0_0");
      Fail8:
      { 
        term = bottomup_1_0.instance.invoke(context, term, lifted19.instance);
        if(term == null)
          break Fail8;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class array_declaration_0_0 extends Strategy 
  { 
    public static array_declaration_0_0 instance = new array_declaration_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("array_declaration_0_0");
      Fail9:
      { 
        IStrategoTerm b_9 = null;
        IStrategoTerm c_9 = null;
        IStrategoTerm d_9 = null;
        IStrategoTerm e_9 = null;
        IStrategoTerm g_9 = null;
        IStrategoTerm h_9 = null;
        IStrategoTerm i_9 = null;
        if(term.getTermType() != IStrategoTerm.APPL || EnsugarC._consCArgument_2 != ((IStrategoAppl)term).getConstructor())
          break Fail9;
        IStrategoTerm arg4 = term.getSubterm(1);
        if(arg4.getTermType() != IStrategoTerm.APPL || EnsugarC._consCArray_2 != ((IStrategoAppl)arg4).getConstructor())
          break Fail9;
        IStrategoTerm arg5 = arg4.getSubterm(0);
        if(arg5.getTermType() != IStrategoTerm.APPL || EnsugarC._consCAccess_2 != ((IStrategoAppl)arg5).getConstructor())
          break Fail9;
        IStrategoTerm arg6 = arg5.getSubterm(1);
        if(arg6.getTermType() != IStrategoTerm.APPL || EnsugarC._consVar_1 != ((IStrategoAppl)arg6).getConstructor())
          break Fail9;
        b_9 = arg6.getSubterm(0);
        term = debug_0_0.instance.invoke(context, term);
        if(term == null)
          break Fail9;
        c_9 = term;
        g_9 = term;
        d_9 = EnsugarC.const1;
        h_9 = g_9;
        term = termFactory.annotateTerm(termFactory.makeAppl(EnsugarC._consFunc_2, new IStrategoTerm[]{termFactory.annotateTerm(termFactory.makeAppl(EnsugarC._consVar_1, new IStrategoTerm[]{b_9}), checkListAnnos(termFactory, EnsugarC.constCons0)), EnsugarC.constCons0}), checkListAnnos(termFactory, EnsugarC.constCons0));
        e_9 = term;
        i_9 = h_9;
        term = termFactory.makeTuple(EnsugarC.const2, b_9);
        term = dr_set_rule_0_3.instance.invoke(context, i_9, d_9, e_9, term);
        if(term == null)
          break Fail9;
        term = c_9;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class array_use_0_0 extends Strategy 
  { 
    public static array_use_0_0 instance = new array_use_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("array_use_0_0");
      Fail10:
      { 
        term = topdownstopping_1_0.instance.invoke(context, term, $Array$Access_0_0.instance);
        if(term == null)
          break Fail10;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $En$Sugar$Type_0_0 extends Strategy 
  { 
    public static $En$Sugar$Type_0_0 instance = new $En$Sugar$Type_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("EnSugarType_0_0");
      Fail11:
      { 
        IStrategoTerm term3 = term;
        IStrategoConstructor cons0 = term.getTermType() == IStrategoTerm.APPL ? ((IStrategoAppl)term).getConstructor() : null;
        Success3:
        { 
          if(cons0 == EnsugarC._consArgument_2)
          { 
            Fail12:
            { 
              IStrategoTerm e_10 = null;
              IStrategoTerm f_10 = null;
              IStrategoTerm arg7 = term.getSubterm(0);
              if(arg7.getTermType() != IStrategoTerm.APPL || EnsugarC._consVar_1 != ((IStrategoAppl)arg7).getConstructor())
                break Fail12;
              f_10 = arg7.getSubterm(0);
              e_10 = term.getSubterm(1);
              term = termFactory.makeAppl(EnsugarC._consCArgument_2, new IStrategoTerm[]{e_10, termFactory.makeAppl(EnsugarC._consVar_1, new IStrategoTerm[]{f_10})});
              if(true)
                break Success3;
            }
            term = term3;
          }
          Success4:
          { 
            if(cons0 == EnsugarC._consCArgument_2)
            { 
              Fail13:
              { 
                IStrategoTerm b_10 = null;
                IStrategoTerm c_10 = null;
                IStrategoTerm d_10 = null;
                IStrategoTerm arg8 = term.getSubterm(0);
                if(arg8.getTermType() != IStrategoTerm.APPL || EnsugarC._consAccess_2 != ((IStrategoAppl)arg8).getConstructor())
                  break Fail13;
                c_10 = arg8.getSubterm(0);
                b_10 = arg8.getSubterm(1);
                d_10 = term.getSubterm(1);
                term = termFactory.makeAppl(EnsugarC._consCArgument_2, new IStrategoTerm[]{b_10, termFactory.makeAppl(EnsugarC._consCAccess_2, new IStrategoTerm[]{c_10, d_10})});
                if(true)
                  break Success4;
              }
              term = term3;
            }
            Success5:
            { 
              if(cons0 == EnsugarC._consCArgument_2)
              { 
                Fail14:
                { 
                  IStrategoTerm w_9 = null;
                  IStrategoTerm x_9 = null;
                  IStrategoTerm y_9 = null;
                  IStrategoTerm arg9 = term.getSubterm(0);
                  if(arg9.getTermType() != IStrategoTerm.APPL || EnsugarC._consArray_2 != ((IStrategoAppl)arg9).getConstructor())
                    break Fail14;
                  y_9 = arg9.getSubterm(0);
                  w_9 = arg9.getSubterm(1);
                  x_9 = term.getSubterm(1);
                  term = convert_array_dimensions_0_0.instance.invoke(context, y_9);
                  if(term == null)
                    break Fail14;
                  term = termFactory.makeAppl(EnsugarC._consCArgument_2, new IStrategoTerm[]{w_9, termFactory.makeAppl(EnsugarC._consCArray_2, new IStrategoTerm[]{x_9, term})});
                  if(true)
                    break Success5;
                }
                term = term3;
              }
              Success6:
              { 
                if(cons0 == EnsugarC._consCArgument_2)
                { 
                  Fail15:
                  { 
                    IStrategoTerm u_9 = null;
                    IStrategoTerm v_9 = null;
                    IStrategoTerm arg10 = term.getSubterm(0);
                    if(arg10.getTermType() != IStrategoTerm.APPL || EnsugarC._consType_1 != ((IStrategoAppl)arg10).getConstructor())
                      break Fail15;
                    u_9 = arg10.getSubterm(0);
                    v_9 = term.getSubterm(1);
                    term = termFactory.makeAppl(EnsugarC._consCArgument_2, new IStrategoTerm[]{u_9, v_9});
                    if(true)
                      break Success6;
                  }
                  term = term3;
                }
                Success7:
                { 
                  if(cons0 == EnsugarC._consCArgument_2)
                  { 
                    Fail16:
                    { 
                      IStrategoTerm r_9 = null;
                      IStrategoTerm s_9 = null;
                      IStrategoTerm t_9 = null;
                      IStrategoTerm arg11 = term.getSubterm(0);
                      if(arg11.getTermType() != IStrategoTerm.APPL || EnsugarC._consBorder_2 != ((IStrategoAppl)arg11).getConstructor())
                        break Fail16;
                      r_9 = arg11.getSubterm(0);
                      s_9 = arg11.getSubterm(1);
                      t_9 = term.getSubterm(1);
                      term = termFactory.makeAppl(EnsugarC._consCArgument_2, new IStrategoTerm[]{r_9, termFactory.makeAppl(EnsugarC._consCBorder_2, new IStrategoTerm[]{s_9, t_9})});
                      if(true)
                        break Success7;
                    }
                    term = term3;
                  }
                  Success8:
                  { 
                    if(cons0 == EnsugarC._consCArgument_2)
                    { 
                      Fail17:
                      { 
                        IStrategoTerm q_9 = null;
                        IStrategoTerm arg12 = term.getSubterm(0);
                        if(arg12.getTermType() != IStrategoTerm.APPL || EnsugarC._consFunctionPtr_0 != ((IStrategoAppl)arg12).getConstructor())
                          break Fail17;
                        q_9 = term.getSubterm(1);
                        term = termFactory.makeAppl(EnsugarC._consCFunctionPtr_1, new IStrategoTerm[]{q_9});
                        if(true)
                          break Success8;
                      }
                      term = term3;
                    }
                    Success9:
                    { 
                      if(cons0 == EnsugarC._consDeclaration_2)
                      { 
                        Fail18:
                        { 
                          IStrategoTerm o_9 = null;
                          IStrategoTerm p_9 = null;
                          IStrategoTerm arg13 = term.getSubterm(0);
                          if(arg13.getTermType() != IStrategoTerm.APPL || EnsugarC._consVar_1 != ((IStrategoAppl)arg13).getConstructor())
                            break Fail18;
                          p_9 = arg13.getSubterm(0);
                          o_9 = term.getSubterm(1);
                          term = termFactory.makeAppl(EnsugarC._consCDeclaration_2, new IStrategoTerm[]{o_9, termFactory.makeAppl(EnsugarC._consVar_1, new IStrategoTerm[]{p_9})});
                          if(true)
                            break Success9;
                        }
                        term = term3;
                      }
                      Success10:
                      { 
                        if(cons0 == EnsugarC._consCDeclaration_2)
                        { 
                          Fail19:
                          { 
                            IStrategoTerm l_9 = null;
                            IStrategoTerm m_9 = null;
                            IStrategoTerm n_9 = null;
                            IStrategoTerm arg14 = term.getSubterm(0);
                            if(arg14.getTermType() != IStrategoTerm.APPL || EnsugarC._consArray_2 != ((IStrategoAppl)arg14).getConstructor())
                              break Fail19;
                            n_9 = arg14.getSubterm(0);
                            l_9 = arg14.getSubterm(1);
                            m_9 = term.getSubterm(1);
                            term = termFactory.makeAppl(EnsugarC._consCDeclaration_2, new IStrategoTerm[]{l_9, termFactory.makeAppl(EnsugarC._consCArray_2, new IStrategoTerm[]{m_9, n_9})});
                            if(true)
                              break Success10;
                          }
                          term = term3;
                        }
                        if(cons0 == EnsugarC._consCDeclaration_2)
                        { 
                          IStrategoTerm j_9 = null;
                          IStrategoTerm k_9 = null;
                          IStrategoTerm arg15 = term.getSubterm(0);
                          if(arg15.getTermType() != IStrategoTerm.APPL || EnsugarC._consType_1 != ((IStrategoAppl)arg15).getConstructor())
                            break Fail11;
                          j_9 = arg15.getSubterm(0);
                          k_9 = term.getSubterm(1);
                          term = termFactory.makeAppl(EnsugarC._consCDeclaration_2, new IStrategoTerm[]{j_9, k_9});
                        }
                        else
                        { 
                          break Fail11;
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $En$Sugar$Inc_0_0 extends Strategy 
  { 
    public static $En$Sugar$Inc_0_0 instance = new $En$Sugar$Inc_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("EnSugarInc_0_0");
      Fail20:
      { 
        IStrategoTerm term11 = term;
        IStrategoConstructor cons1 = term.getTermType() == IStrategoTerm.APPL ? ((IStrategoAppl)term).getConstructor() : null;
        Success11:
        { 
          if(cons1 == EnsugarC._consAssign_2)
          { 
            Fail21:
            { 
              IStrategoTerm r_10 = null;
              IStrategoTerm s_10 = null;
              IStrategoTerm arg16 = term.getSubterm(0);
              if(arg16.getTermType() != IStrategoTerm.APPL || EnsugarC._consVar_1 != ((IStrategoAppl)arg16).getConstructor())
                break Fail21;
              r_10 = arg16.getSubterm(0);
              IStrategoTerm arg17 = term.getSubterm(1);
              if(arg17.getTermType() != IStrategoTerm.APPL || EnsugarC._consAdd_2 != ((IStrategoAppl)arg17).getConstructor())
                break Fail21;
              IStrategoTerm arg18 = arg17.getSubterm(0);
              if(arg18.getTermType() != IStrategoTerm.APPL || EnsugarC._consVar_1 != ((IStrategoAppl)arg18).getConstructor())
                break Fail21;
              if(arg18.getSubterm(0) != r_10 && !r_10.match(arg18.getSubterm(0)))
                break Fail21;
              IStrategoTerm arg19 = arg17.getSubterm(1);
              if(arg19.getTermType() != IStrategoTerm.APPL || EnsugarC._consInt_1 != ((IStrategoAppl)arg19).getConstructor())
                break Fail21;
              s_10 = arg19.getSubterm(0);
              term = termFactory.makeAppl(EnsugarC._consCIncrementStmt_2, new IStrategoTerm[]{r_10, termFactory.makeAppl(EnsugarC._consInt_1, new IStrategoTerm[]{s_10})});
              if(true)
                break Success11;
            }
            term = term11;
          }
          Success12:
          { 
            if(cons1 == EnsugarC._consAssign_2)
            { 
              Fail22:
              { 
                IStrategoTerm n_10 = null;
                IStrategoTerm o_10 = null;
                IStrategoTerm arg20 = term.getSubterm(0);
                if(arg20.getTermType() != IStrategoTerm.APPL || EnsugarC._consVar_1 != ((IStrategoAppl)arg20).getConstructor())
                  break Fail22;
                n_10 = arg20.getSubterm(0);
                IStrategoTerm arg21 = term.getSubterm(1);
                if(arg21.getTermType() != IStrategoTerm.APPL || EnsugarC._consSub_2 != ((IStrategoAppl)arg21).getConstructor())
                  break Fail22;
                IStrategoTerm arg22 = arg21.getSubterm(0);
                if(arg22.getTermType() != IStrategoTerm.APPL || EnsugarC._consVar_1 != ((IStrategoAppl)arg22).getConstructor())
                  break Fail22;
                if(arg22.getSubterm(0) != n_10 && !n_10.match(arg22.getSubterm(0)))
                  break Fail22;
                IStrategoTerm arg23 = arg21.getSubterm(1);
                if(arg23.getTermType() != IStrategoTerm.APPL || EnsugarC._consInt_1 != ((IStrategoAppl)arg23).getConstructor())
                  break Fail22;
                o_10 = arg23.getSubterm(0);
                term = termFactory.makeTuple(EnsugarC.const3, o_10);
                term = subt$S_0_0.instance.invoke(context, term);
                if(term == null)
                  break Fail22;
                term = termFactory.makeAppl(EnsugarC._consCIncrementStmt_2, new IStrategoTerm[]{n_10, termFactory.makeAppl(EnsugarC._consInt_1, new IStrategoTerm[]{term})});
                if(true)
                  break Success12;
              }
              term = term11;
            }
            Success13:
            { 
              if(cons1 == EnsugarC._consCAssign_2)
              { 
                Fail23:
                { 
                  IStrategoTerm l_10 = null;
                  IStrategoTerm m_10 = null;
                  IStrategoTerm arg24 = term.getSubterm(0);
                  if(arg24.getTermType() != IStrategoTerm.APPL || EnsugarC._consVar_1 != ((IStrategoAppl)arg24).getConstructor())
                    break Fail23;
                  l_10 = arg24.getSubterm(0);
                  IStrategoTerm arg25 = term.getSubterm(1);
                  if(arg25.getTermType() != IStrategoTerm.APPL || EnsugarC._consAdd_2 != ((IStrategoAppl)arg25).getConstructor())
                    break Fail23;
                  IStrategoTerm arg26 = arg25.getSubterm(0);
                  if(arg26.getTermType() != IStrategoTerm.APPL || EnsugarC._consVar_1 != ((IStrategoAppl)arg26).getConstructor())
                    break Fail23;
                  if(arg26.getSubterm(0) != l_10 && !l_10.match(arg26.getSubterm(0)))
                    break Fail23;
                  IStrategoTerm arg27 = arg25.getSubterm(1);
                  if(arg27.getTermType() != IStrategoTerm.APPL || EnsugarC._consInt_1 != ((IStrategoAppl)arg27).getConstructor())
                    break Fail23;
                  m_10 = arg27.getSubterm(0);
                  term = termFactory.makeAppl(EnsugarC._consCIncrementExp_2, new IStrategoTerm[]{l_10, termFactory.makeAppl(EnsugarC._consInt_1, new IStrategoTerm[]{m_10})});
                  if(true)
                    break Success13;
                }
                term = term11;
              }
              Success14:
              { 
                if(cons1 == EnsugarC._consCAssign_2)
                { 
                  Fail24:
                  { 
                    IStrategoTerm h_10 = null;
                    IStrategoTerm i_10 = null;
                    IStrategoTerm arg28 = term.getSubterm(0);
                    if(arg28.getTermType() != IStrategoTerm.APPL || EnsugarC._consVar_1 != ((IStrategoAppl)arg28).getConstructor())
                      break Fail24;
                    h_10 = arg28.getSubterm(0);
                    IStrategoTerm arg29 = term.getSubterm(1);
                    if(arg29.getTermType() != IStrategoTerm.APPL || EnsugarC._consSub_2 != ((IStrategoAppl)arg29).getConstructor())
                      break Fail24;
                    IStrategoTerm arg30 = arg29.getSubterm(0);
                    if(arg30.getTermType() != IStrategoTerm.APPL || EnsugarC._consVar_1 != ((IStrategoAppl)arg30).getConstructor())
                      break Fail24;
                    if(arg30.getSubterm(0) != h_10 && !h_10.match(arg30.getSubterm(0)))
                      break Fail24;
                    IStrategoTerm arg31 = arg29.getSubterm(1);
                    if(arg31.getTermType() != IStrategoTerm.APPL || EnsugarC._consInt_1 != ((IStrategoAppl)arg31).getConstructor())
                      break Fail24;
                    i_10 = arg31.getSubterm(0);
                    term = termFactory.makeTuple(EnsugarC.const3, i_10);
                    term = subt$S_0_0.instance.invoke(context, term);
                    if(term == null)
                      break Fail24;
                    term = termFactory.makeAppl(EnsugarC._consCIncrementExp_2, new IStrategoTerm[]{h_10, termFactory.makeAppl(EnsugarC._consInt_1, new IStrategoTerm[]{term})});
                    if(true)
                      break Success14;
                  }
                  term = term11;
                }
                if(cons1 == EnsugarC._consCIncrementExp_2)
                { 
                  IStrategoTerm g_10 = null;
                  g_10 = term.getSubterm(0);
                  IStrategoTerm arg32 = term.getSubterm(1);
                  if(arg32.getTermType() != IStrategoTerm.APPL || EnsugarC._consInt_1 != ((IStrategoAppl)arg32).getConstructor())
                    break Fail20;
                  IStrategoTerm arg33 = arg32.getSubterm(0);
                  if(arg33.getTermType() != IStrategoTerm.STRING || !"1".equals(((IStrategoString)arg33).stringValue()))
                    break Fail20;
                  term = termFactory.makeAppl(EnsugarC._consCIncrementExp_1, new IStrategoTerm[]{g_10});
                }
                else
                { 
                  break Fail20;
                }
              }
            }
          }
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class main_0_0 extends Strategy 
  { 
    public static main_0_0 instance = new main_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("main_0_0");
      Fail25:
      { 
        term = io_$Ensugar$C_0_0.instance.invoke(context, term);
        if(term == null)
          break Fail25;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Procedure_5_0 extends Strategy 
  { 
    public static $Procedure_5_0 instance = new $Procedure_5_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term, Strategy v_15, Strategy w_15, Strategy x_15, Strategy y_15, Strategy z_15)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("Procedure_5_0");
      Fail26:
      { 
        IStrategoTerm f_107 = null;
        IStrategoTerm z_106 = null;
        IStrategoTerm a_107 = null;
        IStrategoTerm b_107 = null;
        IStrategoTerm c_107 = null;
        IStrategoTerm d_107 = null;
        IStrategoTerm g_107 = null;
        IStrategoTerm i_107 = null;
        IStrategoTerm j_107 = null;
        IStrategoTerm n_107 = null;
        if(term.getTermType() != IStrategoTerm.APPL || EnsugarC._consProcedure_5 != ((IStrategoAppl)term).getConstructor())
          break Fail26;
        z_106 = term.getSubterm(0);
        a_107 = term.getSubterm(1);
        b_107 = term.getSubterm(2);
        c_107 = term.getSubterm(3);
        d_107 = term.getSubterm(4);
        IStrategoList annos1 = term.getAnnotations();
        f_107 = annos1;
        term = v_15.invoke(context, z_106);
        if(term == null)
          break Fail26;
        g_107 = term;
        term = w_15.invoke(context, a_107);
        if(term == null)
          break Fail26;
        i_107 = term;
        term = x_15.invoke(context, b_107);
        if(term == null)
          break Fail26;
        j_107 = term;
        term = y_15.invoke(context, c_107);
        if(term == null)
          break Fail26;
        n_107 = term;
        term = z_15.invoke(context, d_107);
        if(term == null)
          break Fail26;
        term = termFactory.annotateTerm(termFactory.makeAppl(EnsugarC._consProcedure_5, new IStrategoTerm[]{g_107, i_107, j_107, n_107, term}), checkListAnnos(termFactory, f_107));
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Array$Access_0_0 extends Strategy 
  { 
    public static $Array$Access_0_0 instance = new $Array$Access_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("ArrayAccess_0_0");
      Fail27:
      { 
        TermReference b_23 = new TermReference();
        TermReference c_23 = new TermReference();
        TermReference d_23 = new TermReference();
        IStrategoTerm g_23 = null;
        IStrategoTerm i_23 = null;
        IStrategoTerm j_23 = null;
        if(c_23.value == null)
          c_23.value = term;
        else
          if(c_23.value != term && !c_23.value.match(term))
            break Fail27;
        if(term.getTermType() != IStrategoTerm.APPL || EnsugarC._consFunc_2 != ((IStrategoAppl)term).getConstructor())
          break Fail27;
        IStrategoTerm arg34 = term.getSubterm(0);
        if(arg34.getTermType() != IStrategoTerm.APPL || EnsugarC._consVar_1 != ((IStrategoAppl)arg34).getConstructor())
          break Fail27;
        if(d_23.value == null)
          d_23.value = arg34.getSubterm(0);
        else
          if(d_23.value != arg34.getSubterm(0) && !d_23.value.match(arg34.getSubterm(0)))
            break Fail27;
        if(b_23.value == null)
          b_23.value = term.getSubterm(1);
        else
          if(b_23.value != term.getSubterm(1) && !b_23.value.match(term.getSubterm(1)))
            break Fail27;
        i_23 = term;
        g_23 = EnsugarC.const1;
        term = i_23;
        j_23 = i_23;
        if(d_23.value == null)
          break Fail27;
        term = termFactory.annotateTerm(termFactory.makeAppl(EnsugarC._consFunc_2, new IStrategoTerm[]{termFactory.annotateTerm(termFactory.makeAppl(EnsugarC._consVar_1, new IStrategoTerm[]{d_23.value}), checkListAnnos(termFactory, EnsugarC.constCons0)), EnsugarC.constCons0}), checkListAnnos(termFactory, EnsugarC.constCons0));
        term = dr_lookup_rule_0_2.instance.invoke(context, j_23, g_23, term);
        if(term == null)
          break Fail27;
        lifted22 lifted220 = new lifted22();
        lifted220.d_23 = d_23;
        lifted220.b_23 = b_23;
        lifted220.c_23 = c_23;
        term = fetch_elem_1_0.instance.invoke(context, term, lifted220);
        if(term == null)
          break Fail27;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class aux_$Array$Access_0_3 extends Strategy 
  { 
    public static aux_$Array$Access_0_3 instance = new aux_$Array$Access_0_3();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term, IStrategoTerm k_23, IStrategoTerm l_23, IStrategoTerm m_23)
    { 
      ITermFactory termFactory = context.getFactory();
      Fail28:
      { 
        IStrategoTerm n_23 = null;
        if(term.getTermType() != IStrategoTerm.TUPLE || term.getSubtermCount() != 2)
          break Fail28;
        IStrategoTerm arg35 = term.getSubterm(0);
        if(arg35.getTermType() != IStrategoTerm.STRING || !"-440237".equals(((IStrategoString)arg35).stringValue()))
          break Fail28;
        n_23 = term.getSubterm(1);
        term = termFactory.makeAppl(EnsugarC._consSubscript_2, new IStrategoTerm[]{termFactory.makeAppl(EnsugarC._consVar_1, new IStrategoTerm[]{n_23}), l_23});
        if(true)
          return term;
      }
      context.push("aux_ArrayAccess_0_3");
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted22 extends Strategy 
  { 
    TermReference d_23;

    TermReference b_23;

    TermReference c_23;

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail29:
      { 
        term = aux_$Array$Access_0_3.instance.invoke(context, term, d_23.value, b_23.value, c_23.value);
        if(term == null)
          break Fail29;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted19 extends Strategy 
  { 
    public static final lifted19 instance = new lifted19();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail30:
      { 
        term = try_1_0.instance.invoke(context, term, array_declaration_0_0.instance);
        if(term == null)
          break Fail30;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted8 extends Strategy 
  { 
    public static final lifted8 instance = new lifted8();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail31:
      { 
        term = $Procedure_5_0.instance.invoke(context, term, _Id.instance, array_declarations_0_0.instance, _Id.instance, _Id.instance, _Id.instance);
        if(term == null)
          break Fail31;
        term = $Procedure_5_0.instance.invoke(context, term, _Id.instance, _Id.instance, _Id.instance, array_use_0_0.instance, _Id.instance);
        if(term == null)
          break Fail31;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted3 extends Strategy 
  { 
    public static final lifted3 instance = new lifted3();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail32:
      { 
        term = repeat_1_0.instance.invoke(context, term, $En$Sugar$Type_0_0.instance);
        if(term == null)
          break Fail32;
        term = repeat_1_0.instance.invoke(context, term, $En$Sugar$Inc_0_0.instance);
        if(term == null)
          break Fail32;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted6 extends Strategy 
  { 
    public static final lifted6 instance = new lifted6();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail33:
      { 
        term = try_1_0.instance.invoke(context, term, array_procedure_0_0.instance);
        if(term == null)
          break Fail33;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted0 extends Strategy 
  { 
    Strategy g_7;

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail34:
      { 
        lifted1 lifted110 = new lifted1();
        lifted110.g_7 = g_7;
        term = try_1_0.instance.invoke(context, term, lifted110);
        if(term == null)
          break Fail34;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted1 extends Strategy 
  { 
    Strategy g_7;

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail35:
      { 
        term = topdownstopping_1_0.instance.invoke(context, term, g_7);
        if(term == null)
          break Fail35;
        if(true)
          return term;
      }
      return null;
    }
  }

  public static void registerInterop(org.spoofax.interpreter.core.IContext context, Context compiledContext)
  { 
    new InteropRegisterer().registerLazy(context, compiledContext, InteropRegisterer.class.getClassLoader());
  }

  @SuppressWarnings("unused") public static class InteropRegisterer extends org.strategoxt.lang.InteropRegisterer 
  { 
    @Override public void register(org.spoofax.interpreter.core.IContext context, Context compiledContext)
    { 
      register(context, compiledContext, context.getVarScope());
    }

    @Override public void registerLazy(org.spoofax.interpreter.core.IContext context, Context compiledContext, ClassLoader classLoader)
    { 
      registerLazy(context, compiledContext, classLoader, context.getVarScope());
    }

    private void register(org.spoofax.interpreter.core.IContext context, Context compiledContext, org.spoofax.interpreter.core.VarScope varScope)
    { 
      compiledContext.registerComponent("EnsugarC");
      EnsugarC.init(compiledContext);
      varScope.addSVar("topdownstopping_1_0", new InteropSDefT(topdownstopping_1_0.instance, context));
      varScope.addSVar("io_EnsugarC_0_0", new InteropSDefT(io_$Ensugar$C_0_0.instance, context));
      varScope.addSVar("Apply__EnsugarC_0_0", new InteropSDefT($Apply__$Ensugar$C_0_0.instance, context));
      varScope.addSVar("convert_array_dimensions_0_0", new InteropSDefT(convert_array_dimensions_0_0.instance, context));
      varScope.addSVar("array_procedure_0_0", new InteropSDefT(array_procedure_0_0.instance, context));
      varScope.addSVar("array_declarations_0_0", new InteropSDefT(array_declarations_0_0.instance, context));
      varScope.addSVar("array_declaration_0_0", new InteropSDefT(array_declaration_0_0.instance, context));
      varScope.addSVar("array_use_0_0", new InteropSDefT(array_use_0_0.instance, context));
      varScope.addSVar("EnSugarType_0_0", new InteropSDefT($En$Sugar$Type_0_0.instance, context));
      varScope.addSVar("EnSugarInc_0_0", new InteropSDefT($En$Sugar$Inc_0_0.instance, context));
      varScope.addSVar("main_0_0", new InteropSDefT(main_0_0.instance, context));
      varScope.addSVar("Procedure_5_0", new InteropSDefT($Procedure_5_0.instance, context));
      varScope.addSVar("ArrayAccess_0_0", new InteropSDefT($Array$Access_0_0.instance, context));
      varScope.addSVar("aux_ArrayAccess_0_3", new InteropSDefT(aux_$Array$Access_0_3.instance, context));
    }

    private void registerLazy(org.spoofax.interpreter.core.IContext context, Context compiledContext, ClassLoader classLoader, org.spoofax.interpreter.core.VarScope varScope)
    { 
      compiledContext.registerComponent("EnsugarC");
      EnsugarC.init(compiledContext);
      varScope.addSVar("topdownstopping_1_0", new InteropSDefT(classLoader, "EnsugarC$topdownstopping_1_0", context));
      varScope.addSVar("io_EnsugarC_0_0", new InteropSDefT(classLoader, "EnsugarC$io_$Ensugar$C_0_0", context));
      varScope.addSVar("Apply__EnsugarC_0_0", new InteropSDefT(classLoader, "EnsugarC$$Apply__$Ensugar$C_0_0", context));
      varScope.addSVar("convert_array_dimensions_0_0", new InteropSDefT(classLoader, "EnsugarC$convert_array_dimensions_0_0", context));
      varScope.addSVar("array_procedure_0_0", new InteropSDefT(classLoader, "EnsugarC$array_procedure_0_0", context));
      varScope.addSVar("array_declarations_0_0", new InteropSDefT(classLoader, "EnsugarC$array_declarations_0_0", context));
      varScope.addSVar("array_declaration_0_0", new InteropSDefT(classLoader, "EnsugarC$array_declaration_0_0", context));
      varScope.addSVar("array_use_0_0", new InteropSDefT(classLoader, "EnsugarC$array_use_0_0", context));
      varScope.addSVar("EnSugarType_0_0", new InteropSDefT(classLoader, "EnsugarC$$En$Sugar$Type_0_0", context));
      varScope.addSVar("EnSugarInc_0_0", new InteropSDefT(classLoader, "EnsugarC$$En$Sugar$Inc_0_0", context));
      varScope.addSVar("main_0_0", new InteropSDefT(classLoader, "EnsugarC$main_0_0", context));
      varScope.addSVar("Procedure_5_0", new InteropSDefT(classLoader, "EnsugarC$$Procedure_5_0", context));
      varScope.addSVar("ArrayAccess_0_0", new InteropSDefT(classLoader, "EnsugarC$$Array$Access_0_0", context));
      varScope.addSVar("aux_ArrayAccess_0_3", new InteropSDefT(classLoader, "EnsugarC$aux_$Array$Access_0_3", context));
    }
  }
}